package it.okkam.importdatacreaterdf;

import it.okkam.strutturedati.AttributiParticella;
import it.okkam.strutturedati.Particella;
import it.okkam.strutturedati.ParticellaCatastale;
import it.okkam.utility.ApriStream;
import it.okkam.utility.Utility;

import java.util.ArrayList;
import java.util.List;

public class LeggiParticelle {
	/** 
	 * leggiParticelle e' il metodo che restituisce la lista delle particelle catastali
	 *
	 * @param  		filePoligoniPath e' l'indirizzo completo del file contenente i poligoni
	 * @param		fileParticellePath e' l'indirizzo completo del file contenente gli attributi
	 * @param		comune e' il nome del comune 
	 * @param		codiceComune e' il codice catastale del comune
	 * @param		FondEdif stringa edificiale oppure fondiaria
	 * @param		PrinPert stringa principale oppure pertinenza
	 * @return   	lista delle particelle catastali
	 * @author      Nicola Petri  
	 * @version 	1.0
	 */
	
	public List<ParticellaCatastale> leggiParticelle(String filePoligoniPath,
			String fileParticellePath, String comune, String codiceComune, String FondEdif , String PrinPert) {
		
		Utility ut = new Utility();
		ArrayList<ParticellaCatastale> listaParticelleCatastali = new ArrayList<ParticellaCatastale>();
		ArrayList<String> contenutoFilePoligoni = null;
		ArrayList<String> contenutoFileAttributi = null;
		ArrayList<Particella> listaParticelleLette = new ArrayList<Particella>();
		ArrayList<AttributiParticella> listaAttributiLetti = new ArrayList<AttributiParticella>();
		ApriStream apriStream = new ApriStream();
		contenutoFilePoligoni = apriStream.apriStream(filePoligoniPath); // lettura
																			// file
																			// Poligoni
		contenutoFileAttributi = apriStream.apriStream(fileParticellePath); // lettura
																			// file
																			// Attributi

		listaParticelleLette = ut.leggiParticelle(contenutoFilePoligoni);
		listaAttributiLetti = ut.leggiAttributi(contenutoFileAttributi);
		
		// caso EDIFICIALE PRINCIPALE // OKKKKKK
		if ((FondEdif.equalsIgnoreCase("edificiale"))&&(PrinPert.equalsIgnoreCase("principale"))){
			listaParticelleCatastali = ut.creaListaParticelleCatastaliEdificialePrincipale(
				listaParticelleLette, listaAttributiLetti, comune, codiceComune);}
		// caso EDIFICIALE PERTINENZA 
		if ((FondEdif.equalsIgnoreCase("edificiale"))&&(PrinPert.equalsIgnoreCase("pertinenza"))){
			listaParticelleCatastali = ut.creaListaParticelleCatastaliEdificialePertinenze(listaParticelleLette, listaAttributiLetti, 
					comune, codiceComune);}
		// caso FONDIARIA PRINCIPALE // OKKKKKK
		if ((FondEdif.equalsIgnoreCase("fondiaria"))&&(PrinPert.equalsIgnoreCase("principale"))){
			listaParticelleCatastali = ut.creaListaParticelleCatastaliFondiariaPrincipale(
				listaParticelleLette, listaAttributiLetti, comune, codiceComune);}
		// caso FONDIARIA PERTINENZA
		if ((FondEdif.equalsIgnoreCase("fondiaria"))&&(PrinPert.equalsIgnoreCase("pertinenza"))){
			listaParticelleCatastali = ut.creaListaParticelleCatastaliFondiariaPertinenze(
				listaParticelleLette, listaAttributiLetti, comune, codiceComune);} 
		

		return listaParticelleCatastali;

	}
	
	
}
